Modern database management systems are powerful tools used for organization, retrieval, and storage of information used by a countless number of applications, including various commercial, industrial, technical, scientific, and educational applications. However, database management systems do not release the application developer from giving plenty of thought to the integration of application programs trying to retrieve data and data sources providing that data. A complex environment consisting of a variety of such applications and a plurality of different data sources makes it difficult to design a successful end-to-end solution that efficiently allows application programs to uniformly access data from those sources.
Object-oriented software technology can be in general defined as the use of objects as the building blocks of applications. Objects are independent program modules written in object-oriented programming languages which are designed to work together at run time. In object-oriented application development, it is often advantageous to store an object's current state into a permanent storage medium, in order to release software and hardware resources used by such an object. When the object is later needed, it may then be retrieved from the place where it is stored. The storage of objects into a permanent storage medium is generally referred to as persistence.
Unfortunately, the majority of business applications used in conventional computer systems require to know and depend on the complete structures and database schemata of the objects to be processed. Enabling the business applications to process new types of objects entails development at considerable expenditure of resources. Changing object attributes by the end-user such that the changes reflect in the business applications constitutes a very difficult and costly process—if possible at all—since not only the objects themselves need to be changed, but also the applications using it.
Accordingly, there is a need for systems and methods that provide an abstract object view to the application programs and that do not stand in the way of openness and flexibility. The knowledge of concrete objects must be taken out of the business applications and centralized in a separate software component. That software component takes responsibility for defining, enhancing, displaying, storing and accessing objects.